MAC 地址
复习
- 编码、时钟与噪声:比特要经过编码,才能变成可被采样判定的信号
- 数据帧的边界:帧把连续比特流切成可独立处理的一段段数据
- 发现传输出错:校验帮助接收方发现内容是否出错
TL;DR
- MAC 地址在同一链路或局域网中标识网卡接口
- 链路层在帧头写明目的和源 MAC 地址
- 网卡只接收地址匹配、广播或自己需要处理的帧
正文
一根线上终于能可靠地传一帧了。可现在,这根线上挂了好几台设备。发送方把帧送出去,它到底该被谁接收?
所以,帧需要写上收件人。链路层在帧头加入目的和源 MAC 地址(MAC address),前者说“交给谁”,后者说“谁发的”。
网卡的身份证
每块网卡的 MAC 地址,通常是一串固定的 48 位编号。网卡收到帧后,会看一看目的地址:
- 和自己的地址一致,就收下
- 是广播地址,也要收下
- 是某些需要自己处理的特殊地址,同样收下
- 其余情况,直接忽略
这就像一个宿舍楼里的信箱:每封信写着具体房号,只有对应房间的人才会取走;而“全体住户”的信,则人人都会看。
要留意的是:MAC 地址更像网卡的身份,而不是网站的地址。 它标识的是“参与当前这段链路收发的那个接口”,一旦数据要跨过路由器去往远方,光靠它就不够用了。
它解决的是“本地交付”
这正是 MAC 地址能力的边界:它让同一局域网内的设备能分清彼此,却不天然告诉我们跨过路由器后如何抵达远方。
为什么?因为 MAC 地址只是一串编号,里面没有“你在网络的哪个位置”这样的信息。想象一下,如果全世界的设备都只靠 MAC 地址通信,那每台路由器就得记住全世界每一块网卡的去向——这张表谁维护得过来?
所以,本地交付交给 MAC 地址,跨网络的路由则需要另一套可分层、可聚合的地址。这套地址是什么,我们很快就会讲到。
思考题 1
MAC 地址为何更像网卡身份而非网站地址?
思考题 2
同一局域网里,如果两台设备的 MAC 地址偶然相同,会发生什么?
小结
知识点
- MAC 地址用于本地链路上的帧交付
- 网卡按目的地址决定是否接收
- MAC 地址不体现网络位置,不适合全球路由
参考资料
- Wikipedia(zh):MAC地址:链路层用于标识网卡接口的地址
- Wikipedia(zh):数据链路层:负责本地帧交付的一层
思考题答案(仅供参考)
思考题 1
它标识的是参与当前链路收发的接口,随网卡(或接口)而定,且不携带位置信息。要跨网络寻址,还需要另一套体现“网络位置”的地址与转发规则,所以它更像“这块网卡的身份”,而不是“某个网站的门牌”。
思考题 2
可能造成混乱:本该发给其中一台的帧,另一台也可能抢着收下,或者通信双方的分工难以区分。所以 MAC 地址在设计上要求尽量全球唯一,通常由厂商分配并各自登记,避免冲突。
协议
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
封面图

设计师 | 南国微雪